Date.prototype.Format = function(fmt) {
	var o = {
		"M+" : this.getMonth() + 1,
		// 月份
		"d+" : this.getDate(),
		// 日
		"h+" : this.getHours(),
		// 小时
		"m+" : this.getMinutes(),
		// 分
		"s+" : this.getSeconds(),
		// 秒
		"q+" : Math.floor((this.getMonth() + 3) / 3),
		// 季度
		"S" : this.getMilliseconds()
	// 毫秒
	};
	if (/(y+)/.test(fmt)) {
		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "")
				.substr(4 - RegExp.$1.length));
	}
	for ( var k in o) {
		if (new RegExp("(" + k + ")").test(fmt)) {
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k])
					: (("00" + o[k]).substr(("" + o[k]).length)));
		}
	}
	return fmt;
};

this.UDate = this.UDate || {};

/**
 * 获取某年每周第一天的开始时间戳,包含该年1月4号那周即第一周
 * @param  {Object} options 配置项
 * @param  {Number} options.year 配置项 可选,年份,默认今年
 * @param  {Number} options.startWeekday 可选,一周从周几开始:0(周日),*1(周一),2(周二)...
 * @return {Array} 		   该年每周第一天的开始时间戳
 */
UDate.eachWeek = function (options) {
	var defaultOptions = {
		year: new Date().getFullYear(),
		startWeekday: 1
	};

	if(Object.prototype.toString.apply(options) === "[object Object]") {
		for(var opt in defaultOptions) {
			if(defaultOptions.hasOwnProperty(opt) && options[opt] !== undefined) {
				defaultOptions[opt] = options[opt];
			}
		}
	}

	//一天的毫秒数
	var millisecond = 24 * 60 * 60 * 1000;

	//该年1月4号的开始时间
	var jan4 = new Date(defaultOptions.year, 0, 4, 0, 0, 0, 0);

	//得到该年1月4号是周几
	var jan4Weekday = jan4.getDay();

	//先计算第一周的开始与1月4号相差几天
	var timespan = jan4Weekday - defaultOptions.startWeekday < 0
					? 7 - Math.abs(jan4Weekday - defaultOptions.startWeekday)
					: jan4Weekday - defaultOptions.startWeekday;

	//然后该年第一周的开始时间戳
	var firstWeekStart_ts = jan4.getTime() - timespan * millisecond;

	//该年最后一天的开始时间戳
	var thatYearEnd_ts = new Date(defaultOptions.year, 11, 31, 0, 0, 0, 0);

	var ret = [];
	var weekStart_ts = firstWeekStart_ts;

	for(;weekStart_ts <= thatYearEnd_ts;) {
		ret.push(weekStart_ts);
		weekStart_ts += millisecond * 7;
	}

	return ret;
};